//引入文件模块
const fs = require('fs')

// 01.引入express模块
const express = require('express')

// 02.创建一个express对象
const app = express()

app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded


//03.使用express对象，创建请求方式
// get()方法，用于创建get请求方式
app.get('/getAllCitys',(request,response)=>{
    //设置运行跨域请求
    response.setHeader('Access-Control-Allow-Origin','*')
    // response.send('Hello World!')
    // 读取一个json文件中的全部数据
    let txt = fs.readFileSync('./data/city.json')
    // 返回到客户端
    response.send(txt)
})
app.get('/getProvinces',(request,response)=>{
    // get方式的请求，通过request.query获取参数
    let {pid} = request.query
    //设置允许跨域请求
    response.setHeader('Access-Control-Allow-Origin','*')
    // 读取一个json文件中的全部数据
    let txt = fs.readFileSync('./data/city.json')
    // JSON.parse()方法，用于将json格式的字符串转为js对象
    let data = JSON.parse(txt)
    let res  = data.filter(r=>r.pid.toString()===pid)
    // 返回到客户端
    // JSON.stringify()方法，用将js对象转为json格式的字符串
    response.send(JSON.stringify(res))
    // setTimeout(() => {
    //     response.send(JSON.stringify(res))
    // }, 3000);
})

// post()方法，用于创建post请求方式
app.post('/addCity',(request,response)=>{
    //设置允许跨域请求
    response.setHeader('Access-Control-Allow-Origin','*')
    //响应头  *表示所有类型的头信息都可以接受
    response.setHeader('Access-Control-Allow-Headers','*');
    // post方式的请求，通过request.body获取参数
    // console.log(request.body);
    let {cid,cname} = request.body
    let str = `{"cid":"${cid}","cname":"${cname}"},\r\n`
    fs.writeFile('./data/city.txt',str,{flag:'a'},function(err){
       if(!err){
            response.send('ok')
       }else{
            response.send('err')
       }
    })
})

//all()方法，表示所有请求都可以访问
app.all('/getCity',(request,response)=>{
     //设置允许跨域请求
     response.setHeader('Access-Control-Allow-Origin','*')
     //读取文件指定文件中的数据，并转为字符串格式
     let data =  fs.readFileSync('./data/city.txt').toString()
     let str = '['+data.substring(0,data.length-3)+']'
     response.send(str)
})


//04.监听开启的服务
app.listen(3000,()=>{
    console.log('服务已经启动，端口号是：3000');
})